package com.company.salarysystem;

// 员工基类（抽象类）
public abstract class Employee {
    protected String name;  // 姓名
    protected String empId; // 工号

    public Employee(String name, String empId) {
        this.name = name;
        this.empId = empId;
    }

    // 抽象方法：计算薪资（子类实现）
    public abstract double calculateSalary();

    // 抽象方法：返回薪资构成明细（子类实现）
    public abstract String getSalaryDetails();

    // 生成工资条（包含薪资明细和异常处理）
    public String generatePaySlip() {
        try {
            double salary = calculateSalary();
            return "===== 工资条 =====\n"
                    + "工号：" + empId + "\n"
                    + "姓名：" + name + "\n"
                    + "薪资构成：" + getSalaryDetails() + "\n"
                    + "本月薪资：" + salary + "元\n"
                    + "==================";
        } catch (IllegalArgumentException e) {
            return "===== 工资条（异常） =====\n"
                    + "工号：" + empId + "\n"
                    + "姓名：" + name + "\n"
                    + "错误信息：" + e.getMessage() + "\n"
                    + "===========================";
        }
    }
}